package com.tx.websocket.demo.model;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Date;

public class Role implements Serializable {

    /**
     * 主键
     * 数据库类型：bigint(20)
     */
    private Long id;

    /**
     * 角色名
     * 数据库类型：varchar(255)
     */
    @NotBlank(message = "角色名不允许为空")
    private String name;

    /**
     * 角色编码
     * 数据库类型：varchar(255)
     */
    @NotBlank(message = "角色编码不允许为空")
    private String code;

    /**
     * 创建角色的用户，用于角色分级
     * 数据库类型：bigint(20)
     */
    private Long createUserId;

    /**
     * 是否启用角色，1：启用，0：关闭
     * 数据库类型：bit(1)
     */
    private Boolean enable;

    /**
     * 描述
     * 数据库类型：varchar(512)
     */
    private String remark;

    /**
     * 创建时间
     * 数据库类型：datetime
     */
    private Date createTime;

    /**
     * 最近更新时间
     * 数据库类型：datetime
     */
    private Date updateTime;

    /**
     * 是否已经被用户拥有
     */
    private Boolean beHave = false;


    public void setId(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setCreateUserId(Long createUserId) {
        this.createUserId = createUserId;
    }

    public Long getCreateUserId() {
        return createUserId;
    }

    public void setEnable(Boolean enable) {
        this.enable = enable;
    }

    public Boolean getEnable() {
        return enable;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getRemark() {
        return remark;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public Boolean getBeHave() {
        return beHave;
    }

    public void setBeHave(Boolean beHave) {
        this.beHave = beHave;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Role role = (Role) o;

        return id.equals(role.id);
    }

    @Override
    public int hashCode() {
        return id.hashCode();
    }
}
